package com.yangchao.ch04

import groovy.text.SimpleTemplateEngine
import groovy.text.StreamingTemplateEngine
import groovy.text.XmlTemplateEngine

class exmpale3 {
    public static void main(String[] args) {
        demo1()
        demo2()
        demo3()
        demo4()
        demo5()

    }

    static void demo1() {
        def name = "Groovy"
        println("这是一门学习${name}的语言")    //占位符
    }

    //简单的模板引擎
    static void demo2() {
        // 定义模板文本
        def txt = '今天是$date,我想去$place'  //必须使用单引号，利用$进行适配

        def engine = new SimpleTemplateEngine() //模板引擎
        def template = engine.createTemplate(txt)  //模板对象

        def bingdingMap = ["date": "星期日", "place": "商场"]  //数据源

        def output = template.make(bingdingMap)    //绑定数据源
        println(output)


    }
    // 简单的模板引擎2
    static void demo3() {
        // 文本
        def file = new File("C:\\Users\\Administrator\\Desktop\\groovy_entry_to_mastery\\15文本模板引擎与元对象编程\\temp\\Work.template.txt")

        def engine = new SimpleTemplateEngine() //模板引擎
        def template = engine.createTemplate(file)  //模板对象

        def bingdingMap = ["name": "图书管理员", "date": "星期天"]  //数据源

        def output = template.make(bingdingMap)    //绑定数据源
        println(output) //模板里的文本
    }

    // 流模板引擎，官方建议使用该方式进行持续的输入输出S
    static void demo4() {
        // 模板文件
        def txt = '流模板引擎：今天是$date,我想去$place'  //必须使用单引号，利用$进行适配
        def engine = new StreamingTemplateEngine() //模板引擎,类导入快捷键：alt +enter
        def template = engine.createTemplate(txt)  //模板对象
        def bingdingMap = ["date": "星期天", "place": "商场"]  //数据源
        def output = template.make(bingdingMap)    //绑定数据源
        println(output) //模板里的文本
    }

    //使用xml模板引擎XMLTemplateEngine
    static  void demo5(){
        //模板问文件
        def txt='''
<root xmlns:gsp='http://groovy.org/gsp>'
    <Work>
        <title>模板文件样例</title>
        <name>$name</name>
        <date>$date</date>
    </Work>
</root>
'''
        def engine = new XmlTemplateEngine() //模板引擎,类导入快捷键：alt +enter
        def template = engine.createTemplate(txt)  //模板对象
        def bingdingMap = ["name": "管理员", "date": "星期天"]  //数据源
        def output = template.make(bingdingMap)    //绑定数据源
        println(output) //模板里的文本
    }

}

